home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 5 / The 640 Meg Shareware Studio CD-ROM Volume V (Data Express)(1994).ISO / amiga / tempdemo.lha / ProgrammersInfo / UserStatus.mod.c < prev   
Encoding:
C/C++ Source or Header  |  1994-05-22  |  9.9 KB  |  262 lines

  1. /*                          UserStatus.mod
  2.  
  3. .----------------------------------------.------------------------------------.
  4. | Handle:                                |   Slot Number: 1,222               |
  5. |   From: 123456789012345678901234567890 | Computer Type:                     |
  6. |  Phone:                                |     Last Call: 06/06/93 @ 22:22:22 |
  7. |-------------------------.--------------^----------.-------------------------|
  8. | Security Level: 233     | Daily Time: 1,000       | Bulletins Access: Yes   |
  9. |     Byte Ratio:         |  Time Left: 1,000       |      Door Access:       |
  10. |     File Ratio: Off     |  Time Bank: 1,000       |      File Access:       |
  11. `-------------------------^-------------------------^-------------------------'
  12.  
  13.          Totals                   Today's Stats               Limits
  14. .-------------------------.-------------------------.-------------------------.
  15. |    Calls: 11,000        |    Calls: 11,000        |    Calls: 11,000        |
  16. | Messages: 11,000        | Messages: 11,000        | Messages: 22,099        |
  17. |-------------------------|-------------------------|-------------------------|
  18. | UL Files: 1,000         | UL Files: 1,000         |                         |
  19. | UL Bytes: 1,000,000,000 | UL Bytes: 1,000,000,000 |                         |
  20. |-------------------------|-------------------------|-------------------------|
  21. | DL Files: 1,000         | DL Files: 1,000         | DL Files: 1,000         |
  22. | DL Bytes: 1,000,000,000 | DL Bytes: 1,000,000,000 | DL Bytes: 1,000,000,000 |
  23. `-------------------------^-------------------------^-------------------------'
  24. */
  25. //**********************
  26. //*****  Includes  *****
  27. //**********************
  28.  
  29. #include <proto/all.h>
  30. #include <stdio.h>
  31. #include <time.h>
  32.  
  33. #include <string.h>
  34. #include <tempest/headers.h>
  35. #include <Skeleton/Commas.h>
  36.  
  37. //********************************
  38. //*****  Structures/Defines  *****
  39. //********************************
  40.  
  41. struct MyMessage
  42.  {
  43.   struct Message Msg;
  44.   struct User User;
  45.   char text[255];
  46.   char text1[255];
  47.   int car,Value,Data;
  48.   long LongValue;
  49.   int  IntValue;
  50.  };
  51.  
  52. struct User User;
  53. struct MsgPort *MyPort = NULL;
  54. struct MyMessage *msg;
  55.  
  56. void GetStr(char s[],int opt);
  57. int  DOORIO();
  58.  
  59. int  EXIT_FLAG, DOOR_DATA, DOOR_CAR, DOOR_VALUE, DOOR_VALUE1 = 0,first = 0;
  60. char DOOR_MSG [255],DOOR_MSG1[255],MyName[255],st[100];
  61.  
  62. //*****************************
  63. //*****  PL (Print Line)  *****
  64. //*****************************
  65.  
  66. void pl(fmt,a1,a2,a3,a4,a5,a6,a7)
  67. char *fmt;
  68. { char s[255]; sprintf(s,fmt,a1,a2,a3,a4,a5,a6,a7); DOOR_DATA=1; strcpy(DOOR_MSG,s); DOORIO(); }
  69.  
  70. //******************
  71. //*****  Main  *****
  72. //******************
  73.  
  74. main(int argc,char *argv[])
  75. {
  76.  char string[255],string1[255];
  77.  char Day[5],Month[5],Year[5];
  78.  register int x=1;
  79.  if(!DoorStart(argv[1])) { PutStr("UserStatus.mod v1.0\n"); exit(0); }
  80. //********************************************************************
  81.  
  82.  pl("\f.----------------------------------------.------------------------------------.\r\n");
  83.  pl("| Handle%-30s |   Slot Number: %-5s               |\r\n",
  84.      User.Name,commas(User.Slot_Number,buff));
  85.  pl("|   From: %-30s Computer Type: %11s         |\r\n",
  86.      User.City,User.ComputerType);
  87.  pl("|  Phone: %-12s                   |     Last Call:                     |\r\n",
  88.      User.VoicePhone);
  89.  pl("|-------------------------.--------------^----------.-------------------------|\r\n");
  90.  pl("| Security Level: %3d     Daily Time: %-5s       Bulletins Access:       |\r\n",
  91.      User.Security,commas((User.Limit_Time),buff));
  92.  pl("|     Byte Ratio: %-2d      |  Time Left: %-5s       |      Door Access:       |\r\n",
  93.      User.F_Ratio,commas(User.Left_Time,buff));
  94.  
  95.  pl("|     File Ratio: %-2d      |  Time Bank: %-5s       |      File Access:       |\r\n",
  96.      User.B_Ratio,commas((User.Total_TimeBank),buff));
  97.  pl("`-------------------------^-------------------------^-------------------------'\r\n\r\n");
  98.  
  99.  pl("         Totals                   Today's Stats               Limits\r\n");
  100.  pl(".-------------------------.-------------------------.-------------------------.\r\n");
  101.  pl("|    Calls: %-6s        |    Calls: ",
  102.      commas(User.Total_Calls,buff));
  103.  pl("%-6s        |    Calls: ",
  104.      commas(User.Period_Calls,buff));
  105.  pl("%-6s        |\r\n",commas(User.Limit_Calls,buff));
  106.  
  107.  
  108.  pl("| Messages: %-6s        Messages: ",
  109.      commas(User.Total_Posts,buff));
  110.  pl("%-6s        Messages: ",
  111.      commas(User.Period_Posts,buff));
  112.  pl("%-6s        |\r\n",commas(User.Limit_Posts,buff));
  113.  
  114.  pl("|-------------------------|-------------------------|-------------------------|\r\n");
  115.  pl("| UL Files: %-6s        UL Files: ",
  116.      commas(User.Total_ULFiles,buff));
  117.  pl("%-6s        |                         |\r\n",commas(User.Period_ULFiles,buff));
  118.  
  119.  
  120.  pl("| UL Bytes: %-13s UL Bytes: ",
  121.      commas(User.Total_ULBytes,buff));
  122.  pl("%-13s |                         |\r\n",commas(User.Period_ULBytes,buff));
  123.  
  124.  pl("|-------------------------|-------------------------|-------------------------|\r\n");
  125.  pl("| DL Files: %-6s        DL Files: ",
  126.      commas(User.Total_DLFiles,buff));
  127.  pl("%-5s         DL Files: ",
  128.      commas(User.Period_DLFiles,buff));
  129.  pl("%-5s         |\r\n",commas(User.Limit_DLFiles,buff));
  130.  
  131.  pl("| DL Bytes: %-13s DL Bytes: ",
  132.      commas(User.Total_DLBytes,buff));
  133.  pl("%-13s DL Bytes: ",
  134.      commas(User.Period_DLBytes,buff));
  135.  pl("%-13s |\r\n",commas(User.Limit_DLBytes,buff));
  136.  pl("`-------------------------^-------------------------^-------------------------'\r\n");
  137.  
  138.  
  139. // strcpy(string,ctime(&User.Time_Last_Logoff));
  140. // strmid(string,Month,5,3);
  141. // strmid(string,Day,9,2);
  142. // strmid(string,Year,23,2);
  143. // pl("Lst Date On : %2s %s %s\r\n",Day,Month,Year);
  144. //********************************************************************
  145. // pl("Security Lv : %d\r\n",User.Security);
  146. //********************************************************************
  147. // pl("# Times On  : %-5d       Today : %d\r\n",User.Total_Calls,User.Period_Calls);
  148. //********************************************************************
  149. // pl("Msgs Posted : %-5d       Today : %d\r\n",User.Total_Posts,User.Period_Posts);
  150. //********************************************************************
  151. // if(User.F_Ratio==0) strcpy(string1,"Disabled");
  152. // else                sprintf(string1,"%d/1",User.B_Ratio);
  153. // pl("File Ratio  : %s\r\n",string1);
  154. //********************************************************************
  155. // if(User.B_Ratio==0) strcpy(string1,"Disabled");
  156. // else                sprintf(string1,"%d/1",User.B_Ratio);
  157. // pl("Byte Ratio  : %s\r\n",string1);
  158. //********************************************************************
  159. // pl("# Downloads : %-4d        Today : %d\r\n",User.Total_DLFiles,User.Period_DLFiles);
  160. //********************************************************************
  161. // pl("# Uploads   : %-4d        Today : %d\r\n",User.Total_ULFiles,User.Period_ULFiles);
  162. //********************************************************************
  163. // pl("Bytes DL'd  : %-10ld  Today : %ld \r\n",User.Total_DLBytes,User.Period_DLBytes);
  164. //********************************************************************
  165. // pl("Bytes UL'd  : %-10ld  Today : %ld\r\n",User.Total_ULBytes,User.Period_ULBytes);
  166. //********************************************************************
  167. // GetStr(string1,19);
  168. // pl("Online Baud : %s\r\n",string1);
  169. //********************************************************************
  170. // pl("Bytes Avail : %ld\r\n\r\n",User.Limit_DLBytes);
  171. //********************************************************************
  172.  
  173. //*************************
  174. //*****  Close Stuff  *****
  175. //*************************
  176.  DOOR_DATA=99;
  177.  strcpy(DOOR_MSG,'\0');
  178.  DOORIO();
  179.  while(msg=(struct MyMessage *)GetMsg(MyPort)) ReplyMsg((struct Message *)msg);
  180.  if(MyPort) DeletePort(MyPort);
  181.  exit(0);
  182. }
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194. //********************
  195. //*****  DoorIO  *****
  196. //********************
  197.  
  198. int DOORIO()
  199. {
  200.  struct MsgPort *HisPort;
  201.  struct MyMessage message;
  202.  int UPDATE;
  203.  if(EXIT_FLAG) return 0;
  204.  UPDATE=0;
  205.  HisPort = FindPort(st);
  206.  if(HisPort!=NULL)
  207.   {
  208.    message.Msg.mn_Node.ln_Type = NT_MESSAGE;
  209.    message.Msg.mn_Length = sizeof(message);
  210.    message.Msg.mn_ReplyPort = MyPort;
  211.    if(first)CopyMem(&User,&message.User,sizeof(struct User));
  212.    message.car   = 0;
  213.    message.Data  = DOOR_DATA;
  214.    message.Value = DOOR_VALUE;
  215.    message.IntValue = DOOR_VALUE1;
  216.    strcpy(message.text,DOOR_MSG);
  217.    strcpy(message.text1,DOOR_MSG1);
  218.    PutMsg((struct MsgPort *)HisPort,(struct Message *)&message);
  219.    Wait(1 << MyPort->mp_SigBit);
  220.    GetMsg(MyPort);
  221.    DOOR_DATA  = message.Data;
  222.    DOOR_VALUE = message.Value;
  223.    DOOR_VALUE1 = message.IntValue;
  224.    strcpy(DOOR_MSG,message.text);
  225.    strcpy(DOOR_MSG1,message.text1);
  226.    CopyMem(&message.User,&User,sizeof(struct User));
  227.    first=1;
  228.    UPDATE=0;
  229.    if(message.car) EXIT_FLAG=1;
  230.   }
  231.  return 0;
  232. }
  233.  
  234. //************************
  235. //*****  Door Start  *****
  236. //************************
  237.  
  238. DoorStart(char node[])
  239. {
  240.  struct MsgPort *HisPort;
  241.  EXIT_FLAG = 0;
  242.  sprintf(st,"%s:TEMPEST_DOOR",node);
  243.  HisPort = FindPort(st);
  244.  if(HisPort==NULL) return (FALSE);
  245.  sprintf(MyName,"%s:DOOR_PORT",node);
  246.  MyPort = CreatePort(MyName,0L);
  247.  if(MyPort==NULL)
  248.   {
  249.    PutStr("Cant open port");
  250.    return(int)FALSE;
  251.   }
  252.  DOORIO();
  253.  return (int)TRUE;
  254. }
  255.  
  256. //*********************************
  257. //*****  GetStr (Get String)  *****
  258. //*********************************
  259.  
  260. void GetStr(char s[],int opt)
  261. { DOOR_DATA=15; DOOR_VALUE=opt; strcpy(s,'\0'); DOORIO(); strcpy(s,DOOR_MSG); }
  262.